package com.touwowo.one;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Producer {
    private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) {
        // 创建连接工厂，设置HOST，username、password信息
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        factory.setUsername("admin");
        factory.setPassword("admin");

        Connection connection = null;
        // 获取连接
        try {
            connection = factory.newConnection();
            Channel channel = connection.createChannel();
            /**
             * 参数解释：
             * 1、队列名称
             * 2、队列里面的消息是否进行持久化(保存到磁盘) 默认把消息存在内存中
             * 3、该队列是否只供一个消费者进行消费 true表示可以多个消费者消费，false表示只能一个消费者消费
             * 4、是否自动删除 在最后一个消费者断开连接后，该队列是否自动删除
             * 5、其他参数
             */
            /**
             * 在定义第三个参数时，如果定义为true，后面消费者进行消费时，会报错
             */
            channel.queueDeclare(QUEUE_NAME,false,false,false,null);
            /**
             * 发布消息
             */
            String message = "Hello World!";
            /**
             * 1、发送消息到哪个交换机
             * 2、路由的key 本次是队列名
             * 3、其他参数信息
             * 4、发送消息的消息体
             */
            channel.basicPublish("", QUEUE_NAME,null,message.getBytes());
        } catch (IOException | TimeoutException e) {
            e.printStackTrace();
        }
    }
}
